#ifndef AMERICAN_PRODUCT_H
#define AMERICAN_PRODUCT_H

#include "PayOffBridge.h"
#include "SolvableTree.h"

class AmericanProduct :  public SolvableTree
{
public:
	AmericanProduct(const PayOffBridge& payoff,double expiry);
	virtual double calcFinalPayOff(double spot) const;
	virtual double calcMidPayOff(double spot, double time,double discountedPayOff) const;
	double getExpiry() const;
public:
	virtual AmericanProduct* clone() const;
	virtual ~AmericanProduct(){}
private:
	PayOffBridge m_payoff;
	double m_expiry;
};

#endif